1
เส้นทางสู่การคำนวณแบบข้ามแพลตฟอร์มบนหน่วยประมวลผลกราฟิก
AI022Lesson 4
00:00

ที่ อินเทอร์เฟซการประมวลผลแบบหลากหลายสำหรับความยืดหยุ่น (HIP) ให้บริการอินเตอร์เฟซรันไทม์ภาษา C++ ที่ทำหน้าที่ซ่อนระดับฮาร์ดแวร์ เพื่อให้โค้ดเดียวกันทำงานได้ทั้งกราฟิกการ์ดของ NVIDIA และ AMD โดยเส้นทางนี้ช่วยลดปัญหาการผูกพันกับผู้ผลิตโดยการจำลองสภาพแวดล้อมของ CUDA ขณะที่เป้าหมายปลายทางคือ ROCm เบื้องหลัง

1. การตั้งค่าสภาพแวดล้อม

การเริ่มต้นเริ่มจากการตั้งค่าตัวแปรสภาพแวดล้อมเพื่อชี้ไปยัง hipcc เครื่องมือคอมไพเลอร์ให้ถูกต้อง:

$ export HIP_PATH=[MYHIP]
$ export PATH=$PATH:[MYHIP]/bin

2. การมาตรฐานเครื่องมือประกอบ

ที่ hipcc เครื่องมือคอมไพเลอร์จะทำงานเหมือนห่อหุ้มอัจฉริยะ สำหรับการสร้างอัตโนมัติ ตรรกะ HIP_PATH ?= $(shell hipconfig --path) ตรรกะนี้ช่วยให้ไฟล์ Makefile ค้นหาตำแหน่งติดตั้ง HIP ได้อัตโนมัติ ไม่ว่าระบบจะตั้งค่าอย่างไรก็ตาม

3. ตรรกะการกำหนดเวอร์ชัน

HIP ใช้สูตรการกำหนดเวอร์ชันที่แน่นอนเพื่อจัดการความสามารถของฟีเจอร์อย่างอัตโนมัติในแต่ละรุ่น:

$$\text{HIP\_VERSION} = \text{HIP\_VERSION\_MAJOR} \times 10^7 + \text{HIP\_VERSION\_MINOR} \times 10^5 + \text{HIP\_VERSION\_PATCH}$$

รหัสแหล่งที่มาของ HIPNVIDIA (NVCC)AMD (Clang/ROCm)

4. ตัวแทนรันไทม์หลัก

HIP ให้บริการ hipMalloc และ hipLaunchKernel เป็นตัวแทนเชิงการทำงานที่เหมือนกับการเรียกใช้งานหน่วยความจำและการดำเนินการของ CUDA ทำให้สามารถใช้แนวคิดการพัฒนาแบบ "แหล่งเดียว" ได้

main.py
TERMINALbash — 80x24
> Ready. Click "Run" to execute.
>